Vamos a hacer un laboratorio sencillo sobre la teoría de la regresión lineal que vimos en clases. La primera parte solo es código para que lo corran y vean los resultados. La segunda parte será su interpretación y tendrán que hacer código sencillo.
Primer modelo de regresión con la relación entre las variables “probabilidad de tener cáncer” y “edad”. Como pueden ver, hice una base con datos que permiten establecer una relación directa entre la edad y el aumento de probabilida de cáncer. El código tiene la creación de la data, el modelo de regresión lineal con la función (lm), acompañado del símbolo (~). Ese símbolo me dice que quiero establecer una relación en un modelo entre esas dos variables.
library(MASS)
set.seed(123)
Edad <- 1:50
Cancer <- 2 * Edad + rnorm(50, mean = 0, sd = 10)
data <- data.frame(Edad, Cancer)
print(data)
## Edad Cancer
## 1 1 -3.604756
## 2 2 1.698225
## 3 3 21.587083
## 4 4 8.705084
## 5 5 11.292877
## 6 6 29.150650
## 7 7 18.609162
## 8 8 3.349388
## 9 9 11.131471
## 10 10 15.543380
## 11 11 34.240818
## 12 12 27.598138
## 13 13 30.007715
## 14 14 29.106827
## 15 15 24.441589
## 16 16 49.869131
## 17 17 38.978505
## 18 18 16.333828
## 19 19 45.013559
## 20 20 35.272086
## 21 21 31.321763
## 22 22 41.820251
## 23 23 35.739956
## 24 24 40.711088
## 25 25 43.749607
## 26 26 35.133067
## 27 27 62.377870
## 28 28 57.533731
## 29 29 46.618631
## 30 30 72.538149
## 31 31 66.264642
## 32 32 61.049285
## 33 33 74.951257
## 34 34 76.781335
## 35 35 78.215811
## 36 36 78.886403
## 37 37 79.539177
## 38 38 75.380883
## 39 39 74.940373
## 40 40 76.195290
## 41 41 75.052930
## 42 42 81.920827
## 43 43 73.346036
## 44 44 109.689560
## 45 45 102.079620
## 46 46 80.768914
## 47 47 89.971152
## 48 48 91.333446
## 49 49 105.799651
## 50 50 99.166309
modelo_Ejemplo <- lm(Cancer ~ Edad, data = data)
summary(modelo_Ejemplo)
##
## Call:
## lm(formula = Cancer ~ Edad, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -20.1120 -6.2223 -0.8193 6.6590 21.5966
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.69016 2.68547 0.257 0.798
## Edad 1.98643 0.09165 21.673 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.353 on 48 degrees of freedom
## Multiple R-squared: 0.9073, Adjusted R-squared: 0.9054
## F-statistic: 469.7 on 1 and 48 DF, p-value: < 2.2e-16
plot(Cancer ~ Edad, data = data, main = "Regresión Lineal Simple", xlab = "Edad", ylab = "Probabilidad de Cancer")
abline(modelo_Ejemplo, col = "blue")
Les puse este gráfico interactivo con los mismos datos, por si les interesa hacer gráficos más chéveres en sus presentaciones futuras.
library(plotly)
## Loading required package: ggplot2
##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:MASS':
##
## select
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
x = Edad
y = Cancer
model = modelo_Ejemplo
plot_ly(data, x = ~x, y = ~y, type = 'scatter', mode = 'markers', marker = list(color = 'blue')) %>%
add_lines(y = ~fitted(model), line = list(color = 'red')) %>%
layout(title = "Regresión Lineal Interactiva", xaxis = list(title = "Variable Independiente"), yaxis = list(title = "Variable Dependiente"))
## A marker object has been specified, but markers is not in the mode
## Adding markers to the mode...
Ahora, otro modelo, con una regresión lineal entre el gasto en publicidad y las ventas. Mayor gasto en publicidad equivale a más ventas???? Pueden verlo cuando corran el código.
set.seed(123)
gasto_publicidad <- rnorm(100, mean = 50, sd = 15)
ventas <- 30 + 0.5 * gasto_publicidad + rnorm(100, mean = 0, sd = 10)
data_marketing <- data.frame(gasto_publicidad, ventas)
model_marketing <- lm(ventas ~ gasto_publicidad, data = data_marketing)
summary(model_marketing)
##
## Call:
## lm(formula = ventas ~ gasto_publicidad, data = data_marketing)
##
## Residuals:
## Min 1Q Median 3Q Max
## -19.073 -6.835 -0.875 5.806 32.904
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 30.72102 3.78581 8.115 1.44e-12 ***
## gasto_publicidad 0.46502 0.07125 6.526 2.98e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 9.707 on 98 degrees of freedom
## Multiple R-squared: 0.303, Adjusted R-squared: 0.2958
## F-statistic: 42.59 on 1 and 98 DF, p-value: 2.984e-09
plot(ventas ~ gasto_publicidad, data = data_marketing, main = "Regresión Lineal en Marketing", xlab = "Gasto en Publicidad", ylab = "Ventas")
abline(model_marketing, col = "red")
Ahora lo mismo, para la relación entre el índice económico y el rendimiento de acciones en una empresa. Aquí si se van a sorprender mucho. Hice una base especialmente para generar una relación bastante extraña. Si se animan a comentar, pueden hacerlo aquí abajo:
Comenten aquí, si es que quieren. No es parte de la calificación del laboratorio.
set.seed(456)
indice_economico <- rnorm(100, mean = -2, sd = 1)
rendimiento_acciones <- -6 * indice_economico + rnorm(100, mean = 0, sd = 2)
data_finanzas <- data.frame(indice_economico, rendimiento_acciones)
model_finanzas <- lm(rendimiento_acciones ~ indice_economico, data = data_finanzas)
summary(model_finanzas)
##
## Call:
## lm(formula = rendimiento_acciones ~ indice_economico, data = data_finanzas)
##
## Residuals:
## Min 1Q Median 3Q Max
## -4.4310 -1.6253 -0.0983 1.8306 3.8262
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -0.2956 0.4168 -0.709 0.48
## indice_economico -6.0331 0.1959 -30.790 <2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1.953 on 98 degrees of freedom
## Multiple R-squared: 0.9063, Adjusted R-squared: 0.9054
## F-statistic: 948 on 1 and 98 DF, p-value: < 2.2e-16
plot(rendimiento_acciones ~ indice_economico, data = data_finanzas, main = "Regresión Lineal en Finanzas", xlab = "Índice Económico", ylab = "Rendimiento de Acciones")
abline(model_finanzas, col = "red")
Bueno. Les toca hacer e interpretar a ustedes.
Primero, voy a crear una base de datos para que puedan jugar:
n <- 100
cov_matrix <- matrix(c(1, 0.7, -0.5, 0.4, 0.2,
0.7, 1, -0.3, 0.2, 0.1,
-0.5, -0.3, 1, -0.1, -0.4,
0.4, 0.2, -0.1, 1, 0.5,
0.2, 0.1, -0.4, 0.5, 1), ncol = 5)
data <- mvrnorm(n, mu = c(5000, 15000, 7000, 2000, 5000), Sigma = cov_matrix)
Base_MKT <- as.data.frame(data)
colnames(Base_MKT) <- c("Gastos_Marketing", "Ventas", "Beneficio", "Inversion_Red_Social", "Ingresos_Publicidad_Online")
Ahora, pueden imprimir la base, para que vean lo que tenemos:
print(Base_MKT)
## Gastos_Marketing Ventas Beneficio Inversion_Red_Social
## 1 5000.170 15000.64 7000.631 1999.581
## 2 4999.097 14998.74 7000.427 1999.388
## 3 5000.078 15000.32 6999.662 1999.917
## 4 4999.041 14999.50 6999.399 2000.689
## 5 5000.743 14999.58 6999.853 2000.019
## 6 5001.166 15000.57 6999.962 2001.839
## 7 5000.949 15000.99 6999.849 2000.488
## 8 5001.360 15000.42 7001.264 1999.196
## 9 5000.143 14998.90 7000.955 2001.863
## 10 4999.071 15000.34 7001.002 2000.046
## 11 4999.207 14998.77 6999.963 1998.239
## 12 4999.112 14999.34 7001.208 2001.420
## 13 4999.691 14999.62 7001.523 2000.642
## 14 5000.344 14999.93 6999.364 2000.585
## 15 5000.035 15000.82 7002.262 2000.966
## 16 4998.716 14999.17 7001.478 1999.062
## 17 4998.850 14998.70 7000.624 2000.540
## 18 5000.355 14997.75 6998.457 1999.067
## 19 4999.305 14999.49 6999.467 1999.813
## 20 4998.749 14997.84 6999.862 2000.482
## 21 5000.329 15002.09 6998.310 2001.000
## 22 4998.463 14999.55 7000.630 1998.455
## 23 4999.986 14999.88 6999.452 2001.015
## 24 5001.170 15000.64 6999.476 1999.964
## 25 4999.961 15000.15 7000.532 2001.257
## 26 4999.197 14999.91 7000.681 1999.578
## 27 4999.489 15000.03 6999.758 1998.965
## 28 5000.982 15001.64 6999.574 2000.768
## 29 4998.879 14998.99 7001.745 1999.592
## 30 4999.406 14998.53 6999.292 1999.777
## 31 4997.561 14998.87 7001.295 1999.989
## 32 5000.368 15001.32 7000.283 2000.945
## 33 4998.987 14998.94 7001.369 2000.609
## 34 5000.131 15000.84 7000.916 2000.429
## 35 4999.969 14998.79 7000.703 2001.618
## 36 5000.080 14999.95 7000.816 1999.333
## 37 4999.035 15000.19 6999.366 2001.528
## 38 4999.114 14999.25 6999.976 2000.392
## 39 4998.504 14999.40 7001.398 1998.034
## 40 5001.279 15000.50 6998.824 2000.958
## 41 4999.005 14999.04 7002.740 1999.560
## 42 5000.468 15001.48 6999.876 2000.493
## 43 5001.092 15001.21 6999.447 2000.595
## 44 4998.844 14998.33 7000.058 2000.307
## 45 5001.856 15001.00 6999.685 1999.569
## 46 5001.233 15002.18 6999.568 2001.810
## 47 4999.403 14999.45 7001.706 2000.189
## 48 4999.832 15000.20 7000.232 1999.449
## 49 5001.140 14999.93 6998.905 2000.832
## 50 4999.798 14999.09 7000.824 2000.585
## 51 4999.559 14999.58 7000.036 2000.110
## 52 5000.300 15000.05 7001.008 2000.308
## 53 4999.950 15000.44 7000.649 1999.319
## 54 5000.887 14999.75 6998.990 2000.741
## 55 4999.424 14999.52 7000.215 2000.423
## 56 5000.607 14999.91 7000.277 2000.484
## 57 5001.357 14999.82 6999.026 2001.979
## 58 5000.015 14999.48 6999.825 2000.546
## 59 5000.007 15000.36 7000.420 2000.651
## 60 4999.653 14999.79 7000.674 1999.619
## 61 4998.625 14999.19 7001.267 2000.324
## 62 5000.940 15000.20 7001.753 2002.396
## 63 4999.798 15000.68 7001.265 1999.934
## 64 4997.407 14999.00 7000.732 1998.986
## 65 4998.363 14999.26 7000.095 1999.597
## 66 5000.561 15000.38 6999.895 1999.403
## 67 5001.169 15000.67 6999.932 2001.089
## 68 4998.957 14999.68 7002.656 2000.168
## 69 5000.603 15000.29 7001.572 2000.885
## 70 4999.893 14999.05 6999.094 1998.662
## 71 5001.803 15001.00 6997.279 2001.355
## 72 5000.616 15000.74 7000.114 1999.251
## 73 5000.486 15001.44 6998.073 2000.922
## 74 4997.722 14997.94 7001.236 1999.927
## 75 4999.272 15000.23 7000.608 1999.941
## 76 5000.824 15000.05 7000.954 2000.841
## 77 4999.771 14998.35 7001.224 2000.034
## 78 5000.336 14999.98 6999.514 1998.991
## 79 5000.899 15000.47 6998.774 1999.989
## 80 5000.312 14999.98 7001.507 2001.400
## 81 4999.727 15000.65 7001.514 1999.230
## 82 4999.229 14999.50 7000.466 2001.256
## 83 4998.225 14998.41 6999.445 1997.620
## 84 5000.754 15000.36 7000.208 1999.484
## 85 4997.283 14997.60 7000.821 1998.492
## 86 5000.327 15000.74 6999.552 2000.573
## 87 5000.618 14999.74 6999.835 2001.679
## 88 4999.522 15000.11 7000.127 2000.384
## 89 5000.737 15001.15 6999.520 2000.109
## 90 5000.341 15001.55 6999.274 1999.672
## 91 5001.038 15000.97 6998.633 1999.744
## 92 4999.531 14999.77 6999.652 1998.582
## 93 4998.356 14999.64 7000.002 1999.581
## 94 4999.917 15001.16 7000.524 1999.454
## 95 4999.760 15000.14 6999.551 2001.056
## 96 4999.296 15000.44 7000.525 1999.280
## 97 5000.298 15001.59 7001.598 1999.933
## 98 5000.529 15000.49 6999.699 2000.676
## 99 5000.056 15000.25 6999.359 1999.985
## 100 4999.626 14999.89 7000.738 1998.049
## Ingresos_Publicidad_Online
## 1 4998.936
## 2 4999.659
## 3 4999.221
## 4 5002.254
## 5 4999.563
## 6 5000.045
## 7 4999.059
## 8 4999.263
## 9 4999.902
## 10 4999.363
## 11 4999.563
## 12 4999.302
## 13 4999.142
## 14 5000.494
## 15 5000.532
## 16 4999.916
## 17 4999.542
## 18 4999.498
## 19 5000.704
## 20 5000.371
## 21 5001.104
## 22 4999.417
## 23 5000.224
## 24 5000.749
## 25 5001.292
## 26 5000.046
## 27 4999.330
## 28 5001.385
## 29 4999.738
## 30 4999.314
## 31 4999.652
## 32 4999.997
## 33 5000.065
## 34 4999.069
## 35 5001.357
## 36 4998.888
## 37 5001.963
## 38 4999.235
## 39 4998.140
## 40 4999.870
## 41 4998.656
## 42 5000.376
## 43 5000.019
## 44 5000.295
## 45 4999.648
## 46 5000.698
## 47 4999.189
## 48 4999.120
## 49 5000.485
## 50 4998.921
## 51 5002.094
## 52 5000.045
## 53 4999.976
## 54 5002.091
## 55 5001.468
## 56 5000.528
## 57 5000.313
## 58 5000.722
## 59 5001.166
## 60 5000.487
## 61 4999.680
## 62 5000.204
## 63 4999.233
## 64 5000.003
## 65 5000.145
## 66 4999.630
## 67 5000.321
## 68 4997.839
## 69 4998.613
## 70 4998.296
## 71 5001.361
## 72 4998.492
## 73 5002.167
## 74 5000.552
## 75 4999.512
## 76 4999.407
## 77 5000.231
## 78 5000.148
## 79 5001.370
## 80 4999.776
## 81 4998.672
## 82 5000.936
## 83 4999.174
## 84 4998.780
## 85 4998.339
## 86 4999.878
## 87 5000.434
## 88 5000.615
## 89 5001.000
## 90 4999.936
## 91 4999.916
## 92 4999.320
## 93 4999.912
## 94 4999.195
## 95 5001.790
## 96 5000.452
## 97 4999.831
## 98 5001.018
## 99 5000.372
## 100 4998.492
Para que no se olviden, pueden darme características de la base de datos?? También, hagan algunas operaciones y gráficos con las variables. Recuerden que todas son numéricas con la finalidad de hacer nuestras regresiones lineales.
#Hagan todo lo que puedan/quieran. Recuerden el mensaje a García. Usen todo lo que hemos aprendido.
# Resumen de los datos
summary(Base_MKT)
## Gastos_Marketing Ventas Beneficio Inversion_Red_Social
## Min. :4997 Min. :14998 Min. :6997 Min. :1998
## 1st Qu.:4999 1st Qu.:14999 1st Qu.:7000 1st Qu.:2000
## Median :5000 Median :15000 Median :7000 Median :2000
## Mean :5000 Mean :15000 Mean :7000 Mean :2000
## 3rd Qu.:5001 3rd Qu.:15001 3rd Qu.:7001 3rd Qu.:2001
## Max. :5002 Max. :15002 Max. :7003 Max. :2002
## Ingresos_Publicidad_Online
## Min. :4998
## 1st Qu.:4999
## Median :5000
## Mean :5000
## 3rd Qu.:5001
## Max. :5002
#
str(Base_MKT)
## 'data.frame': 100 obs. of 5 variables:
## $ Gastos_Marketing : num 5000 4999 5000 4999 5001 ...
## $ Ventas : num 15001 14999 15000 14999 15000 ...
## $ Beneficio : num 7001 7000 7000 6999 7000 ...
## $ Inversion_Red_Social : num 2000 1999 2000 2001 2000 ...
## $ Ingresos_Publicidad_Online: num 4999 5000 4999 5002 5000 ...
Ahora sí, vamos a hacer las regresiones lineales.
Primero, quisiera ver las correlaciones entre las variables: Pueden hacerlo e interpretarlo?? Recuerden que podemos usar la función (cor). Yo les ayudo con la primera. Hagan un par más, y díganme el tipo de correlación que existe entre las variables.
Qué tipo de correlación encontraron??? Pueden explicar y poner su interpretación? Quisieran dibujarlo???
Escriban aquí su respuesta.
cor(Base_MKT$Gastos_Marketing, Base_MKT$Ventas)
## [1] 0.6585203
En este caso muestra que existe cierta correlación pero no es un correlación fuerte entre las variables
cor(Base_MKT$Gastos_Marketing, Base_MKT$Beneficio)
## [1] -0.4178565
if (!require(cowplot)) {
install.packages("cowplot")
library(cowplot)
}
## Loading required package: cowplot
# Crear scatter plot de Gastos_Marketing vs. Ventas
scatter_plot_ventas <- ggplot(Base_MKT, aes(x = Gastos_Marketing, y = Ventas)) +
geom_point() +
labs(title = "Gastos de Marketing vs Ventas",
x = "Gastos de Marketing", y = "Ventas")
# Crear scatter plot de Gastos_Marketing vs. Beneficio
scatter_plot_beneficio <- ggplot(Base_MKT, aes(x = Gastos_Marketing, y = Beneficio)) +
geom_point() +
labs(title = "Gastos de Marketing vs Beneficio",
x = "Gastos de Marketing", y = "Beneficio")
scatter_plot_ingresos <- ggplot(Base_MKT, aes(x = Inversion_Red_Social, y = Ingresos_Publicidad_Online)) +
geom_point() +
labs(title = "InvRedSocial vs IngresoPublicOnline",
x = "Inversion_Red_Social", y = "Ingresos_Publicidad_Online")
# Crear scatter plot de Inversion_Red_Social vs. Ventas
scatter_plot_ventas_inversion <- ggplot(Base_MKT, aes(x = Inversion_Red_Social, y = Ventas)) +
geom_point() +
labs(title = "Inversion_Red_Social vs Ventas",
x = "Inversion_Red_Social", y = "Ventas")
plot_grid(scatter_plot_ventas, scatter_plot_beneficio,
scatter_plot_ingresos, scatter_plot_ventas_inversion,
ncol = 2, nrow = 2)
Ahora vamos a hacer un primer modelo. Quisiera que usen los ejemplos que hice arriba y hagan un primer modelo llamado ModeloVenMark con una regresión lineal entre las variables Ventas (variable dependiente) y Gastos_Marketing (variable independiente). Qué encontraron en el modelo?? Cómo lo interpretan?? Hagan un gráfico o un gráfico interactivo como los que les puse arriba. Qué me quiere decir el R cuadrado del modelo?? Respondan a todo esto en uno o dos párrafos abajo del chunk.
ModeloVenMark <- lm(Ventas ~ Gastos_Marketing, data = Base_MKT)
summary(ModeloVenMark)
##
## Call:
## lm(formula = Ventas ~ Gastos_Marketing, data = Base_MKT)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.50953 -0.42909 -0.05711 0.42773 1.84853
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.177e+04 3.732e+02 31.530 < 2e-16 ***
## Gastos_Marketing 6.466e-01 7.464e-02 8.662 9.6e-14 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.7141 on 98 degrees of freedom
## Multiple R-squared: 0.4336, Adjusted R-squared: 0.4279
## F-statistic: 75.04 on 1 and 98 DF, p-value: 9.602e-14
plot(Ventas ~ Gastos_Marketing, data = Base_MKT, main = "Regresión Lineal en Ventas", xlab = "Gasto en Marketing", ylab = "Ventas")
abline(ModeloVenMark, col = "red")
La métrica R2 indica que tan bueno es el modelo para explicar la
variabilidad de la variable dependiente, para ello se toma valores entre
0 y 1, cuando es 0 quiere decir que el modelo no explica la variabilidad
y 1 indica que el modelo explica totalmente la variabilidad. En este
caso al ser 0.4, nos dice que de alguna maera explica el modelo pero no
es tan preciso como se esperaría.
De manera gráfica se puede observar que tiene sentido ya que existen datos que se encuentran muy dispersos de la línea que se ha dibujado.
Ahora hagan lo mismo, usando como variable dependiente otra vez a “Ventas”, pero la variable independiente ahora será Beneficio. No olviden de hacer uno o dos párrafos con la interpretación.
ModeloVenBen <- lm(Ventas ~ Beneficio, data = Base_MKT)
summary(ModeloVenBen)
##
## Call:
## lm(formula = Ventas ~ Beneficio, data = Base_MKT)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.62189 -0.49258 0.05083 0.59800 2.07898
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 16667.2473 658.0344 25.329 <2e-16 ***
## Beneficio -0.2382 0.0940 -2.534 0.0129 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.9193 on 98 degrees of freedom
## Multiple R-squared: 0.06148, Adjusted R-squared: 0.05191
## F-statistic: 6.42 on 1 and 98 DF, p-value: 0.01287
plot(Ventas ~ Beneficio, data = Base_MKT, main = "Regresión Lineal en Ventas", xlab = "Beneficio", ylab = "Ventas")
abline(ModeloVenBen, col = "red")
En este caso el modelo indica que existe una pequeña relación negativa entre Ventas y el Beneficio, analizando la métrica de R 2 vemos que es de 0.05 por lo que indica que el modelo es muy malo no logra explicar para nada la variabilidad de las ventas basandonos en el beneficio.
Ahora, hagan DOS MODELOS MÁS usando dos variables que consideren puedan indicarnos un resultado para la empresa. No olviden de hacer uno o dos párrafos con la interpretación.
ModeloVenInvRedSocial <- lm(Ventas ~ Inversion_Red_Social, data = Base_MKT)
summary(ModeloVenInvRedSocial)
##
## Call:
## lm(formula = Ventas ~ Inversion_Red_Social, data = Base_MKT)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.18937 -0.58849 -0.00776 0.67306 1.92286
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.448e+04 1.954e+02 74.115 < 2e-16 ***
## Inversion_Red_Social 2.601e-01 9.768e-02 2.662 0.00907 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.9164 on 98 degrees of freedom
## Multiple R-squared: 0.06745, Adjusted R-squared: 0.05794
## F-statistic: 7.089 on 1 and 98 DF, p-value: 0.009068
plot(Ventas ~ Inversion_Red_Social, data = Base_MKT, main = "Regresión Lineal en Ventas", xlab = "Inversión en Redes Sociales", ylab = "Ventas")
abline(ModeloVenInvRedSocial, col = "green")
Esta comparación entre la variable de Inversión en Redes Sociales y Ventas tiene un comportamiento bastante similar al modelo anterior, pero en este caso muestra cierta relación positiva, al revisar el factor R2 se evidencia que es muy similar al anterior por lo que el modelo no es adecuado para mostrar la variabilidad.
ModeloVenIngrPubOnline <- lm(Ventas ~ Ingresos_Publicidad_Online, data = Base_MKT)
summary(ModeloVenIngrPubOnline)
##
## Call:
## lm(formula = Ventas ~ Ingresos_Publicidad_Online, data = Base_MKT)
##
## Residuals:
## Min 1Q Median 3Q Max
## -2.17230 -0.63034 -0.00838 0.60947 2.10980
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.409e+04 4.944e+02 28.494 <2e-16 ***
## Ingresos_Publicidad_Online 1.824e-01 9.888e-02 1.845 0.0681 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.9329 on 98 degrees of freedom
## Multiple R-squared: 0.03356, Adjusted R-squared: 0.0237
## F-statistic: 3.403 on 1 and 98 DF, p-value: 0.06808
plot(Ventas ~ Ingresos_Publicidad_Online, data = Base_MKT, main = "Regresión Lineal en Ventas", xlab = "Ingresos Publicidad Online", ylab = "Ventas")
abline(ModeloVenIngrPubOnline, col = "blue")
De los cuatro modelos elaborados este es el que peor interpretación y resultados produce, tiene una línea casi horizontal, el factor R 2 es el más bajo de todos los ejercicios indicando que este modelo es totalmente aleatorio e inadecuado para estos datos.
Ahora, usen esta maravillosa función para poder poner en una sola tabla todos los resultados de sus modelos:
library(stargazer)
##
## Please cite as:
## Hlavac, Marek (2022). stargazer: Well-Formatted Regression and Summary Statistics Tables.
## R package version 5.2.3. https://CRAN.R-project.org/package=stargazer
#summary(ModeloVenBen)
lista_modelos <- list(ModeloVenMark, ModeloVenBen)
stargazer(lista_modelos, title="Resumen de modelos usados", type = "html")
##
## <table style="text-align:center"><caption><strong>Resumen de modelos usados</strong></caption>
## <tr><td colspan="3" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"></td><td colspan="2"><em>Dependent variable:</em></td></tr>
## <tr><td></td><td colspan="2" style="border-bottom: 1px solid black"></td></tr>
## <tr><td style="text-align:left"></td><td colspan="2">Ventas</td></tr>
## <tr><td style="text-align:left"></td><td>(1)</td><td>(2)</td></tr>
## <tr><td colspan="3" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Gastos_Marketing</td><td>0.647<sup>***</sup></td><td></td></tr>
## <tr><td style="text-align:left"></td><td>(0.075)</td><td></td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td></tr>
## <tr><td style="text-align:left">Beneficio</td><td></td><td>-0.238<sup>**</sup></td></tr>
## <tr><td style="text-align:left"></td><td></td><td>(0.094)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td></tr>
## <tr><td style="text-align:left">Constant</td><td>11,767.120<sup>***</sup></td><td>16,667.250<sup>***</sup></td></tr>
## <tr><td style="text-align:left"></td><td>(373.201)</td><td>(658.034)</td></tr>
## <tr><td style="text-align:left"></td><td></td><td></td></tr>
## <tr><td colspan="3" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Observations</td><td>100</td><td>100</td></tr>
## <tr><td style="text-align:left">R<sup>2</sup></td><td>0.434</td><td>0.061</td></tr>
## <tr><td style="text-align:left">Adjusted R<sup>2</sup></td><td>0.428</td><td>0.052</td></tr>
## <tr><td style="text-align:left">Residual Std. Error (df = 98)</td><td>0.714</td><td>0.919</td></tr>
## <tr><td style="text-align:left">F Statistic (df = 1; 98)</td><td>75.038<sup>***</sup></td><td>6.420<sup>**</sup></td></tr>
## <tr><td colspan="3" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"><em>Note:</em></td><td colspan="2" style="text-align:right"><sup>*</sup>p<0.1; <sup>**</sup>p<0.05; <sup>***</sup>p<0.01</td></tr>
## </table>
Finalmente, escriban un párrafo en el que puedan concluir cuál es su mejor modelo. Luego, escriban cuatro decisiones que puede tomar la empresa a partir de sus modelos de regresión lineal.